> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cdp.coinbase.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Types

## Interfaces

### CreatePolicyOptions

Defined in: [client/policies/policies.types.ts:53](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L53)

Options for creating a Policy.

#### Properties

##### idempotencyKey?

```ts theme={null}
optional idempotencyKey: string;
```

Defined in: [client/policies/policies.types.ts:58](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L58)

The idempotency key to ensure the request is processed exactly once.
Used to safely retry requests without accidentally performing the same operation twice.

##### policy

```ts theme={null}
policy: {
  description?: string;
  rules: (
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        ethValue: string;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "ethValue";
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmAddress";
      }
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
     })[];
     operation: "signEvmTransaction";
   }
     | {
     action: "reject" | "accept";
     operation: "signEvmHash";
   }
     | {
     action: "reject" | "accept";
     criteria: {
        match: string;
        type: "evmMessage";
     }[];
     operation: "signEvmMessage";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        conditions: (
           | {
           addresses: ...[];
           operator: ... | ...;
           path: string;
         }
           | {
           operator: ... | ... | ... | ... | ...;
           path: string;
           value: string;
         }
           | {
           match: string;
           path: string;
        })[];
        type: "evmTypedDataField";
        types: {
           primaryType: string;
           types: Record<string, {
              name: ...;
              type: ...;
           }[]>;
        };
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmTypedDataVerifyingContract";
     })[];
     operation: "signEvmTypedData";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        ethValue: string;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "ethValue";
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmAddress";
      }
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
      }
        | {
        networks: (
           | "base"
           | "base-sepolia"
           | "ethereum"
           | "ethereum-sepolia"
           | "avalanche"
           | "polygon"
           | "optimism"
          | "arbitrum")[];
        operator: "in" | "not in";
        type: "evmNetwork";
     })[];
     operation: "sendEvmTransaction";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "solAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        solValue: string;
        type: "solValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "splAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        splValue: string;
        type: "splValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "mintAddress";
      }
        | {
        conditions: {
           instruction: string;
           params?: ...[];
        }[];
        idls: (
           | "SystemProgram"
           | "TokenProgram"
           | "AssociatedTokenProgram"
           | objectOutputType<{
           address: ...;
           instructions: ...;
        }, ZodTypeAny, "passthrough">)[];
        type: "solData";
      }
        | {
        operator: "in" | "not in";
        programIds: string[];
        type: "programId";
     })[];
     operation: "signSolTransaction";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "solAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        solValue: string;
        type: "solValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "splAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        splValue: string;
        type: "splValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "mintAddress";
      }
        | {
        conditions: {
           instruction: string;
           params?: ...[];
        }[];
        idls: (
           | "SystemProgram"
           | "TokenProgram"
           | "AssociatedTokenProgram"
           | objectOutputType<{
           address: ...;
           instructions: ...;
        }, ZodTypeAny, "passthrough">)[];
        type: "solData";
      }
        | {
        operator: "in" | "not in";
        programIds: string[];
        type: "programId";
      }
        | {
        networks: ("solana-devnet" | "solana")[];
        operator: "in" | "not in";
        type: "solNetwork";
     })[];
     operation: "sendSolTransaction";
   }
     | {
     action: "reject" | "accept";
     criteria: {
        match: string;
        type: "solMessage";
     }[];
     operation: "signSolMessage";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        ethValue: string;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "ethValue";
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmAddress";
      }
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
      }
        | {
        networks: (
           | "base"
           | "base-sepolia"
           | "ethereum"
           | "ethereum-sepolia"
           | "avalanche"
           | "polygon"
           | "optimism"
           | "arbitrum"
           | "zora"
          | "bnb")[];
        operator: "in" | "not in";
        type: "evmNetwork";
     })[];
     operation: "prepareUserOperation";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        ethValue: string;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "ethValue";
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmAddress";
      }
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
     })[];
     operation: "sendUserOperation";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        ethValue: string;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "ethValue";
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmAddress";
      }
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
     })[];
     operation: "signEndUserEvmTransaction";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        ethValue: string;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "ethValue";
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmAddress";
      }
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
      }
        | {
        networks: (
           | "base"
           | "base-sepolia"
           | "ethereum"
           | "ethereum-sepolia"
           | "avalanche"
           | "polygon"
           | "optimism"
           | "arbitrum"
           | "zora"
          | "bnb")[];
        operator: "in" | "not in";
        type: "evmNetwork";
     })[];
     operation: "sendEndUserEvmTransaction";
   }
     | {
     action: "reject" | "accept";
     criteria: {
        match: string;
        type: "evmMessage";
     }[];
     operation: "signEndUserEvmMessage";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        conditions: (
           | {
           addresses: ...[];
           operator: ... | ...;
           path: string;
         }
           | {
           operator: ... | ... | ... | ... | ...;
           path: string;
           value: string;
         }
           | {
           match: string;
           path: string;
        })[];
        type: "evmTypedDataField";
        types: {
           primaryType: string;
           types: Record<string, {
              name: ...;
              type: ...;
           }[]>;
        };
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmTypedDataVerifyingContract";
     })[];
     operation: "signEndUserEvmTypedData";
   }
     | {
     action: "reject" | "accept";
     operation: "signEndUserEvmHash";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "solAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        solValue: string;
        type: "solValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "splAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        splValue: string;
        type: "splValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "mintAddress";
      }
        | {
        conditions: {
           instruction: string;
           params?: ...[];
        }[];
        idls: (
           | "SystemProgram"
           | "TokenProgram"
           | "AssociatedTokenProgram"
           | objectOutputType<{
           address: ...;
           instructions: ...;
        }, ZodTypeAny, "passthrough">)[];
        type: "solData";
      }
        | {
        operator: "in" | "not in";
        programIds: string[];
        type: "programId";
     })[];
     operation: "signEndUserSolTransaction";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "solAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        solValue: string;
        type: "solValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "splAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        splValue: string;
        type: "splValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "mintAddress";
      }
        | {
        conditions: {
           instruction: string;
           params?: ...[];
        }[];
        idls: (
           | "SystemProgram"
           | "TokenProgram"
           | "AssociatedTokenProgram"
           | objectOutputType<{
           address: ...;
           instructions: ...;
        }, ZodTypeAny, "passthrough">)[];
        type: "solData";
      }
        | {
        operator: "in" | "not in";
        programIds: string[];
        type: "programId";
      }
        | {
        networks: ("solana-devnet" | "solana")[];
        operator: "in" | "not in";
        type: "solNetwork";
     })[];
     operation: "sendEndUserSolTransaction";
   }
     | {
     action: "reject" | "accept";
     criteria: {
        match: string;
        type: "solMessage";
     }[];
     operation: "signEndUserSolMessage";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
      }
        | {
        networks: (
           | "base"
           | "base-sepolia"
           | "ethereum"
           | "ethereum-sepolia"
           | "avalanche"
           | "polygon"
           | "optimism"
          | "arbitrum")[];
        operator: "in" | "not in";
        type: "evmNetwork";
     })[];
     operation: "sendEndUserEvmAsset";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        ethValue: string;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "ethValue";
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmAddress";
      }
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
      }
        | {
        networks: (
           | "base"
           | "base-sepolia"
           | "ethereum"
           | "ethereum-sepolia"
           | "avalanche"
           | "polygon"
           | "optimism"
           | "arbitrum"
           | "zora"
          | "bnb")[];
        operator: "in" | "not in";
        type: "evmNetwork";
     })[];
     operation: "sendEndUserOperation";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
      }
        | {
        networks: (
           | "base"
           | "base-sepolia"
           | "ethereum"
           | "ethereum-sepolia"
           | "avalanche"
           | "polygon"
           | "optimism"
          | "arbitrum")[];
        operator: "in" | "not in";
        type: "evmNetwork";
     })[];
     operation: "createEndUserEvmSwap";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "splAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        splValue: string;
        type: "splValue";
      }
        | {
        conditions: {
           instruction: string;
           params?: ...[];
        }[];
        idls: (
           | "SystemProgram"
           | "TokenProgram"
           | "AssociatedTokenProgram"
           | objectOutputType<{
           address: ...;
           instructions: ...;
        }, ZodTypeAny, "passthrough">)[];
        type: "solData";
      }
        | {
        networks: ("solana-devnet" | "solana")[];
        operator: "in" | "not in";
        type: "solNetwork";
     })[];
     operation: "sendEndUserSolAsset";
  })[];
  scope: "project" | "account";
};
```

Defined in: [client/policies/policies.types.ts:63](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L63)

The policy definition to create.
Contains the scope, description, and rules for the policy.

###### description?

```ts theme={null}
optional description: string;
```

An optional human-readable description for the policy.
Limited to 50 characters of alphanumeric characters, spaces, commas, and periods.

###### rules

```ts theme={null}
rules: (
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     ethValue: string;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "ethValue";
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmAddress";
   }
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
  })[];
  operation: "signEvmTransaction";
}
  | {
  action: "reject" | "accept";
  operation: "signEvmHash";
}
  | {
  action: "reject" | "accept";
  criteria: {
     match: string;
     type: "evmMessage";
  }[];
  operation: "signEvmMessage";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     conditions: (
        | {
        addresses: ...[];
        operator: ... | ...;
        path: string;
      }
        | {
        operator: ... | ... | ... | ... | ...;
        path: string;
        value: string;
      }
        | {
        match: string;
        path: string;
     })[];
     type: "evmTypedDataField";
     types: {
        primaryType: string;
        types: Record<string, {
           name: ...;
           type: ...;
        }[]>;
     };
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmTypedDataVerifyingContract";
  })[];
  operation: "signEvmTypedData";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     ethValue: string;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "ethValue";
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmAddress";
   }
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
   }
     | {
     networks: (
        | "base"
        | "base-sepolia"
        | "ethereum"
        | "ethereum-sepolia"
        | "avalanche"
        | "polygon"
        | "optimism"
       | "arbitrum")[];
     operator: "in" | "not in";
     type: "evmNetwork";
  })[];
  operation: "sendEvmTransaction";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "solAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     solValue: string;
     type: "solValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "splAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     splValue: string;
     type: "splValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "mintAddress";
   }
     | {
     conditions: {
        instruction: string;
        params?: ...[];
     }[];
     idls: (
        | "SystemProgram"
        | "TokenProgram"
        | "AssociatedTokenProgram"
        | objectOutputType<{
        address: ...;
        instructions: ...;
     }, ZodTypeAny, "passthrough">)[];
     type: "solData";
   }
     | {
     operator: "in" | "not in";
     programIds: string[];
     type: "programId";
  })[];
  operation: "signSolTransaction";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "solAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     solValue: string;
     type: "solValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "splAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     splValue: string;
     type: "splValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "mintAddress";
   }
     | {
     conditions: {
        instruction: string;
        params?: ...[];
     }[];
     idls: (
        | "SystemProgram"
        | "TokenProgram"
        | "AssociatedTokenProgram"
        | objectOutputType<{
        address: ...;
        instructions: ...;
     }, ZodTypeAny, "passthrough">)[];
     type: "solData";
   }
     | {
     operator: "in" | "not in";
     programIds: string[];
     type: "programId";
   }
     | {
     networks: ("solana-devnet" | "solana")[];
     operator: "in" | "not in";
     type: "solNetwork";
  })[];
  operation: "sendSolTransaction";
}
  | {
  action: "reject" | "accept";
  criteria: {
     match: string;
     type: "solMessage";
  }[];
  operation: "signSolMessage";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     ethValue: string;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "ethValue";
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmAddress";
   }
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
   }
     | {
     networks: (
        | "base"
        | "base-sepolia"
        | "ethereum"
        | "ethereum-sepolia"
        | "avalanche"
        | "polygon"
        | "optimism"
        | "arbitrum"
        | "zora"
       | "bnb")[];
     operator: "in" | "not in";
     type: "evmNetwork";
  })[];
  operation: "prepareUserOperation";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     ethValue: string;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "ethValue";
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmAddress";
   }
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
  })[];
  operation: "sendUserOperation";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     ethValue: string;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "ethValue";
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmAddress";
   }
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
  })[];
  operation: "signEndUserEvmTransaction";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     ethValue: string;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "ethValue";
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmAddress";
   }
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
   }
     | {
     networks: (
        | "base"
        | "base-sepolia"
        | "ethereum"
        | "ethereum-sepolia"
        | "avalanche"
        | "polygon"
        | "optimism"
        | "arbitrum"
        | "zora"
       | "bnb")[];
     operator: "in" | "not in";
     type: "evmNetwork";
  })[];
  operation: "sendEndUserEvmTransaction";
}
  | {
  action: "reject" | "accept";
  criteria: {
     match: string;
     type: "evmMessage";
  }[];
  operation: "signEndUserEvmMessage";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     conditions: (
        | {
        addresses: ...[];
        operator: ... | ...;
        path: string;
      }
        | {
        operator: ... | ... | ... | ... | ...;
        path: string;
        value: string;
      }
        | {
        match: string;
        path: string;
     })[];
     type: "evmTypedDataField";
     types: {
        primaryType: string;
        types: Record<string, {
           name: ...;
           type: ...;
        }[]>;
     };
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmTypedDataVerifyingContract";
  })[];
  operation: "signEndUserEvmTypedData";
}
  | {
  action: "reject" | "accept";
  operation: "signEndUserEvmHash";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "solAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     solValue: string;
     type: "solValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "splAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     splValue: string;
     type: "splValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "mintAddress";
   }
     | {
     conditions: {
        instruction: string;
        params?: ...[];
     }[];
     idls: (
        | "SystemProgram"
        | "TokenProgram"
        | "AssociatedTokenProgram"
        | objectOutputType<{
        address: ...;
        instructions: ...;
     }, ZodTypeAny, "passthrough">)[];
     type: "solData";
   }
     | {
     operator: "in" | "not in";
     programIds: string[];
     type: "programId";
  })[];
  operation: "signEndUserSolTransaction";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "solAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     solValue: string;
     type: "solValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "splAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     splValue: string;
     type: "splValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "mintAddress";
   }
     | {
     conditions: {
        instruction: string;
        params?: ...[];
     }[];
     idls: (
        | "SystemProgram"
        | "TokenProgram"
        | "AssociatedTokenProgram"
        | objectOutputType<{
        address: ...;
        instructions: ...;
     }, ZodTypeAny, "passthrough">)[];
     type: "solData";
   }
     | {
     operator: "in" | "not in";
     programIds: string[];
     type: "programId";
   }
     | {
     networks: ("solana-devnet" | "solana")[];
     operator: "in" | "not in";
     type: "solNetwork";
  })[];
  operation: "sendEndUserSolTransaction";
}
  | {
  action: "reject" | "accept";
  criteria: {
     match: string;
     type: "solMessage";
  }[];
  operation: "signEndUserSolMessage";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
   }
     | {
     networks: (
        | "base"
        | "base-sepolia"
        | "ethereum"
        | "ethereum-sepolia"
        | "avalanche"
        | "polygon"
        | "optimism"
       | "arbitrum")[];
     operator: "in" | "not in";
     type: "evmNetwork";
  })[];
  operation: "sendEndUserEvmAsset";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     ethValue: string;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "ethValue";
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmAddress";
   }
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
   }
     | {
     networks: (
        | "base"
        | "base-sepolia"
        | "ethereum"
        | "ethereum-sepolia"
        | "avalanche"
        | "polygon"
        | "optimism"
        | "arbitrum"
        | "zora"
       | "bnb")[];
     operator: "in" | "not in";
     type: "evmNetwork";
  })[];
  operation: "sendEndUserOperation";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
   }
     | {
     networks: (
        | "base"
        | "base-sepolia"
        | "ethereum"
        | "ethereum-sepolia"
        | "avalanche"
        | "polygon"
        | "optimism"
       | "arbitrum")[];
     operator: "in" | "not in";
     type: "evmNetwork";
  })[];
  operation: "createEndUserEvmSwap";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "splAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     splValue: string;
     type: "splValue";
   }
     | {
     conditions: {
        instruction: string;
        params?: ...[];
     }[];
     idls: (
        | "SystemProgram"
        | "TokenProgram"
        | "AssociatedTokenProgram"
        | objectOutputType<{
        address: ...;
        instructions: ...;
     }, ZodTypeAny, "passthrough">)[];
     type: "solData";
   }
     | {
     networks: ("solana-devnet" | "solana")[];
     operator: "in" | "not in";
     type: "solNetwork";
  })[];
  operation: "sendEndUserSolAsset";
})[];
```

Array of rules that comprise the policy.
Limited to a maximum of 10 rules per policy.

###### scope

```ts theme={null}
scope: "project" | "account" = PolicyScopeEnum;
```

The scope of the policy.
"project" applies to the entire project, "account" applies to specific accounts.

***

### DeletePolicyOptions

Defined in: [client/policies/policies.types.ts:80](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L80)

Options for deleting a Policy.

#### Properties

##### id

```ts theme={null}
id: string;
```

Defined in: [client/policies/policies.types.ts:85](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L85)

The unique identifier of the policy to delete.
This is a UUID that's generated when the policy is created.

##### idempotencyKey?

```ts theme={null}
optional idempotencyKey: string;
```

Defined in: [client/policies/policies.types.ts:90](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L90)

The idempotency key to ensure the request is processed exactly once.
Used to safely retry requests without accidentally performing the same operation twice.

***

### GetPolicyByIdOptions

Defined in: [client/policies/policies.types.ts:69](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L69)

Options for retrieving a Policy by ID.

#### Properties

##### id

```ts theme={null}
id: string;
```

Defined in: [client/policies/policies.types.ts:74](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L74)

The unique identifier of the policy to retrieve.
This is a UUID that's generated when the policy is created.

***

### ListPoliciesOptions

Defined in: [client/policies/policies.types.ts:26](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L26)

#### Properties

##### pageSize?

```ts theme={null}
optional pageSize: number;
```

Defined in: [client/policies/policies.types.ts:28](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L28)

The page size to paginate through the accounts.

##### pageToken?

```ts theme={null}
optional pageToken: string;
```

Defined in: [client/policies/policies.types.ts:30](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L30)

The page token to paginate through the accounts.

##### scope?

```ts theme={null}
optional scope: "project" | "account";
```

Defined in: [client/policies/policies.types.ts:34](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L34)

The scope of the policies to return. If `project`, the response will include exactly one policy, which is the project-level policy. If `account`, the response will include all account-level policies for the developer's CDP Project.

***

### ListPoliciesResult

Defined in: [client/policies/policies.types.ts:40](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L40)

The result of listing policies.

#### Properties

##### nextPageToken?

```ts theme={null}
optional nextPageToken: string;
```

Defined in: [client/policies/policies.types.ts:47](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L47)

The next page token to paginate through the policies.
If undefined, there are no more policies to paginate through.

##### policies

```ts theme={null}
policies: Policy[];
```

Defined in: [client/policies/policies.types.ts:42](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L42)

The list of policies matching the query parameters.

***

### UpdatePolicyOptions

Defined in: [client/policies/policies.types.ts:96](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L96)

Options for updating a Policy.

#### Properties

##### id

```ts theme={null}
id: string;
```

Defined in: [client/policies/policies.types.ts:101](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L101)

The unique identifier of the policy to update.
This is a UUID that's generated when the policy is created.

##### idempotencyKey?

```ts theme={null}
optional idempotencyKey: string;
```

Defined in: [client/policies/policies.types.ts:111](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L111)

The idempotency key to ensure the request is processed exactly once.
Used to safely retry requests without accidentally performing the same operation twice.

##### policy

```ts theme={null}
policy: {
  description?: string;
  rules: (
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        ethValue: string;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "ethValue";
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmAddress";
      }
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
     })[];
     operation: "signEvmTransaction";
   }
     | {
     action: "reject" | "accept";
     operation: "signEvmHash";
   }
     | {
     action: "reject" | "accept";
     criteria: {
        match: string;
        type: "evmMessage";
     }[];
     operation: "signEvmMessage";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        conditions: (
           | {
           addresses: ...[];
           operator: ... | ...;
           path: string;
         }
           | {
           operator: ... | ... | ... | ... | ...;
           path: string;
           value: string;
         }
           | {
           match: string;
           path: string;
        })[];
        type: "evmTypedDataField";
        types: {
           primaryType: string;
           types: Record<string, {
              name: ...;
              type: ...;
           }[]>;
        };
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmTypedDataVerifyingContract";
     })[];
     operation: "signEvmTypedData";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        ethValue: string;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "ethValue";
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmAddress";
      }
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
      }
        | {
        networks: (
           | "base"
           | "base-sepolia"
           | "ethereum"
           | "ethereum-sepolia"
           | "avalanche"
           | "polygon"
           | "optimism"
          | "arbitrum")[];
        operator: "in" | "not in";
        type: "evmNetwork";
     })[];
     operation: "sendEvmTransaction";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "solAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        solValue: string;
        type: "solValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "splAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        splValue: string;
        type: "splValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "mintAddress";
      }
        | {
        conditions: {
           instruction: string;
           params?: ...[];
        }[];
        idls: (
           | "SystemProgram"
           | "TokenProgram"
           | "AssociatedTokenProgram"
           | objectOutputType<{
           address: ...;
           instructions: ...;
        }, ZodTypeAny, "passthrough">)[];
        type: "solData";
      }
        | {
        operator: "in" | "not in";
        programIds: string[];
        type: "programId";
     })[];
     operation: "signSolTransaction";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "solAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        solValue: string;
        type: "solValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "splAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        splValue: string;
        type: "splValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "mintAddress";
      }
        | {
        conditions: {
           instruction: string;
           params?: ...[];
        }[];
        idls: (
           | "SystemProgram"
           | "TokenProgram"
           | "AssociatedTokenProgram"
           | objectOutputType<{
           address: ...;
           instructions: ...;
        }, ZodTypeAny, "passthrough">)[];
        type: "solData";
      }
        | {
        operator: "in" | "not in";
        programIds: string[];
        type: "programId";
      }
        | {
        networks: ("solana-devnet" | "solana")[];
        operator: "in" | "not in";
        type: "solNetwork";
     })[];
     operation: "sendSolTransaction";
   }
     | {
     action: "reject" | "accept";
     criteria: {
        match: string;
        type: "solMessage";
     }[];
     operation: "signSolMessage";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        ethValue: string;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "ethValue";
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmAddress";
      }
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
      }
        | {
        networks: (
           | "base"
           | "base-sepolia"
           | "ethereum"
           | "ethereum-sepolia"
           | "avalanche"
           | "polygon"
           | "optimism"
           | "arbitrum"
           | "zora"
          | "bnb")[];
        operator: "in" | "not in";
        type: "evmNetwork";
     })[];
     operation: "prepareUserOperation";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        ethValue: string;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "ethValue";
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmAddress";
      }
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
     })[];
     operation: "sendUserOperation";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        ethValue: string;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "ethValue";
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmAddress";
      }
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
     })[];
     operation: "signEndUserEvmTransaction";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        ethValue: string;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "ethValue";
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmAddress";
      }
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
      }
        | {
        networks: (
           | "base"
           | "base-sepolia"
           | "ethereum"
           | "ethereum-sepolia"
           | "avalanche"
           | "polygon"
           | "optimism"
           | "arbitrum"
           | "zora"
          | "bnb")[];
        operator: "in" | "not in";
        type: "evmNetwork";
     })[];
     operation: "sendEndUserEvmTransaction";
   }
     | {
     action: "reject" | "accept";
     criteria: {
        match: string;
        type: "evmMessage";
     }[];
     operation: "signEndUserEvmMessage";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        conditions: (
           | {
           addresses: ...[];
           operator: ... | ...;
           path: string;
         }
           | {
           operator: ... | ... | ... | ... | ...;
           path: string;
           value: string;
         }
           | {
           match: string;
           path: string;
        })[];
        type: "evmTypedDataField";
        types: {
           primaryType: string;
           types: Record<string, {
              name: ...;
              type: ...;
           }[]>;
        };
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmTypedDataVerifyingContract";
     })[];
     operation: "signEndUserEvmTypedData";
   }
     | {
     action: "reject" | "accept";
     operation: "signEndUserEvmHash";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "solAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        solValue: string;
        type: "solValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "splAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        splValue: string;
        type: "splValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "mintAddress";
      }
        | {
        conditions: {
           instruction: string;
           params?: ...[];
        }[];
        idls: (
           | "SystemProgram"
           | "TokenProgram"
           | "AssociatedTokenProgram"
           | objectOutputType<{
           address: ...;
           instructions: ...;
        }, ZodTypeAny, "passthrough">)[];
        type: "solData";
      }
        | {
        operator: "in" | "not in";
        programIds: string[];
        type: "programId";
     })[];
     operation: "signEndUserSolTransaction";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "solAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        solValue: string;
        type: "solValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "splAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        splValue: string;
        type: "splValue";
      }
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "mintAddress";
      }
        | {
        conditions: {
           instruction: string;
           params?: ...[];
        }[];
        idls: (
           | "SystemProgram"
           | "TokenProgram"
           | "AssociatedTokenProgram"
           | objectOutputType<{
           address: ...;
           instructions: ...;
        }, ZodTypeAny, "passthrough">)[];
        type: "solData";
      }
        | {
        operator: "in" | "not in";
        programIds: string[];
        type: "programId";
      }
        | {
        networks: ("solana-devnet" | "solana")[];
        operator: "in" | "not in";
        type: "solNetwork";
     })[];
     operation: "sendEndUserSolTransaction";
   }
     | {
     action: "reject" | "accept";
     criteria: {
        match: string;
        type: "solMessage";
     }[];
     operation: "signEndUserSolMessage";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
      }
        | {
        networks: (
           | "base"
           | "base-sepolia"
           | "ethereum"
           | "ethereum-sepolia"
           | "avalanche"
           | "polygon"
           | "optimism"
          | "arbitrum")[];
        operator: "in" | "not in";
        type: "evmNetwork";
     })[];
     operation: "sendEndUserEvmAsset";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        ethValue: string;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "ethValue";
      }
        | {
        addresses: `0x${string}`[];
        operator: "in" | "not in";
        type: "evmAddress";
      }
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
      }
        | {
        networks: (
           | "base"
           | "base-sepolia"
           | "ethereum"
           | "ethereum-sepolia"
           | "avalanche"
           | "polygon"
           | "optimism"
           | "arbitrum"
           | "zora"
          | "bnb")[];
        operator: "in" | "not in";
        type: "evmNetwork";
     })[];
     operation: "sendEndUserOperation";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        abi:   | "erc20"
           | "erc721"
           | "erc1155"
           | readonly (
           | {
         }
           | {
         }
           | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
        conditions: {
           function: string;
           params?: ...[];
        }[];
        type: "evmData";
      }
        | {
        changeCents: number;
        operator: ">" | ">=" | "<" | "<=" | "==";
        type: "netUSDChange";
      }
        | {
        networks: (
           | "base"
           | "base-sepolia"
           | "ethereum"
           | "ethereum-sepolia"
           | "avalanche"
           | "polygon"
           | "optimism"
          | "arbitrum")[];
        operator: "in" | "not in";
        type: "evmNetwork";
     })[];
     operation: "createEndUserEvmSwap";
   }
     | {
     action: "reject" | "accept";
     criteria: (
        | {
        addresses: string[];
        operator: "in" | "not in";
        type: "splAddress";
      }
        | {
        operator: ">" | ">=" | "<" | "<=" | "==";
        splValue: string;
        type: "splValue";
      }
        | {
        conditions: {
           instruction: string;
           params?: ...[];
        }[];
        idls: (
           | "SystemProgram"
           | "TokenProgram"
           | "AssociatedTokenProgram"
           | objectOutputType<{
           address: ...;
           instructions: ...;
        }, ZodTypeAny, "passthrough">)[];
        type: "solData";
      }
        | {
        networks: ("solana-devnet" | "solana")[];
        operator: "in" | "not in";
        type: "solNetwork";
     })[];
     operation: "sendEndUserSolAsset";
  })[];
};
```

Defined in: [client/policies/policies.types.ts:106](https://github.com/coinbase/cdp-sdk/blob/59b6f4f714b6e359fb2390fa1df724c8c5419568/typescript/packages/cdp-sdk/src/client/policies/policies.types.ts#L106)

The updated policy definition.
Contains the description and rules for the policy.

###### description?

```ts theme={null}
optional description: string;
```

An optional human-readable description for the policy.
Limited to 50 characters of alphanumeric characters, spaces, commas, and periods.

###### rules

```ts theme={null}
rules: (
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     ethValue: string;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "ethValue";
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmAddress";
   }
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
  })[];
  operation: "signEvmTransaction";
}
  | {
  action: "reject" | "accept";
  operation: "signEvmHash";
}
  | {
  action: "reject" | "accept";
  criteria: {
     match: string;
     type: "evmMessage";
  }[];
  operation: "signEvmMessage";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     conditions: (
        | {
        addresses: ...[];
        operator: ... | ...;
        path: string;
      }
        | {
        operator: ... | ... | ... | ... | ...;
        path: string;
        value: string;
      }
        | {
        match: string;
        path: string;
     })[];
     type: "evmTypedDataField";
     types: {
        primaryType: string;
        types: Record<string, {
           name: ...;
           type: ...;
        }[]>;
     };
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmTypedDataVerifyingContract";
  })[];
  operation: "signEvmTypedData";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     ethValue: string;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "ethValue";
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmAddress";
   }
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
   }
     | {
     networks: (
        | "base"
        | "base-sepolia"
        | "ethereum"
        | "ethereum-sepolia"
        | "avalanche"
        | "polygon"
        | "optimism"
       | "arbitrum")[];
     operator: "in" | "not in";
     type: "evmNetwork";
  })[];
  operation: "sendEvmTransaction";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "solAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     solValue: string;
     type: "solValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "splAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     splValue: string;
     type: "splValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "mintAddress";
   }
     | {
     conditions: {
        instruction: string;
        params?: ...[];
     }[];
     idls: (
        | "SystemProgram"
        | "TokenProgram"
        | "AssociatedTokenProgram"
        | objectOutputType<{
        address: ...;
        instructions: ...;
     }, ZodTypeAny, "passthrough">)[];
     type: "solData";
   }
     | {
     operator: "in" | "not in";
     programIds: string[];
     type: "programId";
  })[];
  operation: "signSolTransaction";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "solAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     solValue: string;
     type: "solValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "splAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     splValue: string;
     type: "splValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "mintAddress";
   }
     | {
     conditions: {
        instruction: string;
        params?: ...[];
     }[];
     idls: (
        | "SystemProgram"
        | "TokenProgram"
        | "AssociatedTokenProgram"
        | objectOutputType<{
        address: ...;
        instructions: ...;
     }, ZodTypeAny, "passthrough">)[];
     type: "solData";
   }
     | {
     operator: "in" | "not in";
     programIds: string[];
     type: "programId";
   }
     | {
     networks: ("solana-devnet" | "solana")[];
     operator: "in" | "not in";
     type: "solNetwork";
  })[];
  operation: "sendSolTransaction";
}
  | {
  action: "reject" | "accept";
  criteria: {
     match: string;
     type: "solMessage";
  }[];
  operation: "signSolMessage";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     ethValue: string;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "ethValue";
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmAddress";
   }
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
   }
     | {
     networks: (
        | "base"
        | "base-sepolia"
        | "ethereum"
        | "ethereum-sepolia"
        | "avalanche"
        | "polygon"
        | "optimism"
        | "arbitrum"
        | "zora"
       | "bnb")[];
     operator: "in" | "not in";
     type: "evmNetwork";
  })[];
  operation: "prepareUserOperation";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     ethValue: string;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "ethValue";
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmAddress";
   }
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
  })[];
  operation: "sendUserOperation";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     ethValue: string;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "ethValue";
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmAddress";
   }
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
  })[];
  operation: "signEndUserEvmTransaction";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     ethValue: string;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "ethValue";
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmAddress";
   }
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
   }
     | {
     networks: (
        | "base"
        | "base-sepolia"
        | "ethereum"
        | "ethereum-sepolia"
        | "avalanche"
        | "polygon"
        | "optimism"
        | "arbitrum"
        | "zora"
       | "bnb")[];
     operator: "in" | "not in";
     type: "evmNetwork";
  })[];
  operation: "sendEndUserEvmTransaction";
}
  | {
  action: "reject" | "accept";
  criteria: {
     match: string;
     type: "evmMessage";
  }[];
  operation: "signEndUserEvmMessage";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     conditions: (
        | {
        addresses: ...[];
        operator: ... | ...;
        path: string;
      }
        | {
        operator: ... | ... | ... | ... | ...;
        path: string;
        value: string;
      }
        | {
        match: string;
        path: string;
     })[];
     type: "evmTypedDataField";
     types: {
        primaryType: string;
        types: Record<string, {
           name: ...;
           type: ...;
        }[]>;
     };
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmTypedDataVerifyingContract";
  })[];
  operation: "signEndUserEvmTypedData";
}
  | {
  action: "reject" | "accept";
  operation: "signEndUserEvmHash";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "solAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     solValue: string;
     type: "solValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "splAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     splValue: string;
     type: "splValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "mintAddress";
   }
     | {
     conditions: {
        instruction: string;
        params?: ...[];
     }[];
     idls: (
        | "SystemProgram"
        | "TokenProgram"
        | "AssociatedTokenProgram"
        | objectOutputType<{
        address: ...;
        instructions: ...;
     }, ZodTypeAny, "passthrough">)[];
     type: "solData";
   }
     | {
     operator: "in" | "not in";
     programIds: string[];
     type: "programId";
  })[];
  operation: "signEndUserSolTransaction";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "solAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     solValue: string;
     type: "solValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "splAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     splValue: string;
     type: "splValue";
   }
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "mintAddress";
   }
     | {
     conditions: {
        instruction: string;
        params?: ...[];
     }[];
     idls: (
        | "SystemProgram"
        | "TokenProgram"
        | "AssociatedTokenProgram"
        | objectOutputType<{
        address: ...;
        instructions: ...;
     }, ZodTypeAny, "passthrough">)[];
     type: "solData";
   }
     | {
     operator: "in" | "not in";
     programIds: string[];
     type: "programId";
   }
     | {
     networks: ("solana-devnet" | "solana")[];
     operator: "in" | "not in";
     type: "solNetwork";
  })[];
  operation: "sendEndUserSolTransaction";
}
  | {
  action: "reject" | "accept";
  criteria: {
     match: string;
     type: "solMessage";
  }[];
  operation: "signEndUserSolMessage";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
   }
     | {
     networks: (
        | "base"
        | "base-sepolia"
        | "ethereum"
        | "ethereum-sepolia"
        | "avalanche"
        | "polygon"
        | "optimism"
       | "arbitrum")[];
     operator: "in" | "not in";
     type: "evmNetwork";
  })[];
  operation: "sendEndUserEvmAsset";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     ethValue: string;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "ethValue";
   }
     | {
     addresses: `0x${string}`[];
     operator: "in" | "not in";
     type: "evmAddress";
   }
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
   }
     | {
     networks: (
        | "base"
        | "base-sepolia"
        | "ethereum"
        | "ethereum-sepolia"
        | "avalanche"
        | "polygon"
        | "optimism"
        | "arbitrum"
        | "zora"
       | "bnb")[];
     operator: "in" | "not in";
     type: "evmNetwork";
  })[];
  operation: "sendEndUserOperation";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     abi:   | "erc20"
        | "erc721"
        | "erc1155"
        | readonly (
        | {
      }
        | {
      }
        | { payable?: boolean | undefined; constant?: boolean | undefined; gas?: number | undefined; } & ({ inputs: readonly AbiParameter[]; outputs: readonly AbiParameter[]; type: "function"; name: string; stateMutability: "payable" | ... 2 more ... | "nonpayable"; } | { ...; } | { ...; } | { ...; }))[];
     conditions: {
        function: string;
        params?: ...[];
     }[];
     type: "evmData";
   }
     | {
     changeCents: number;
     operator: ">" | ">=" | "<" | "<=" | "==";
     type: "netUSDChange";
   }
     | {
     networks: (
        | "base"
        | "base-sepolia"
        | "ethereum"
        | "ethereum-sepolia"
        | "avalanche"
        | "polygon"
        | "optimism"
       | "arbitrum")[];
     operator: "in" | "not in";
     type: "evmNetwork";
  })[];
  operation: "createEndUserEvmSwap";
}
  | {
  action: "reject" | "accept";
  criteria: (
     | {
     addresses: string[];
     operator: "in" | "not in";
     type: "splAddress";
   }
     | {
     operator: ">" | ">=" | "<" | "<=" | "==";
     splValue: string;
     type: "splValue";
   }
     | {
     conditions: {
        instruction: string;
        params?: ...[];
     }[];
     idls: (
        | "SystemProgram"
        | "TokenProgram"
        | "AssociatedTokenProgram"
        | objectOutputType<{
        address: ...;
        instructions: ...;
     }, ZodTypeAny, "passthrough">)[];
     type: "solData";
   }
     | {
     networks: ("solana-devnet" | "solana")[];
     operator: "in" | "not in";
     type: "solNetwork";
  })[];
  operation: "sendEndUserSolAsset";
})[];
```

Array of rules that comprise the policy.
Limited to a maximum of 10 rules per policy.

## Type Aliases

* [PoliciesClientInterface](/sdks/cdp-sdks-v2/typescript/policies/Types/PoliciesClientInterface)
