@coinbase/cdp-sdk
Version:
SDK for interacting with the Coinbase Developer Platform Wallet API
239 lines (235 loc) • 7.42 kB
text/typescript
/**
* Generated by orval v7.6.0 🍺
* Do not edit manually.
* Coinbase Developer Platform APIs
* The Coinbase Developer Platform APIs - leading the world's transition onchain.
* OpenAPI spec version: 2.0.0
*/
import type {
CreateEvmSmartAccountBody,
CreateSpendPermissionRequest,
EvmSmartAccount,
EvmUserOperation,
ListEvmSmartAccounts200,
ListEvmSmartAccountsParams,
ListSpendPermissions200,
ListSpendPermissionsParams,
PrepareUserOperationBody,
RevokeSpendPermissionRequest,
SendUserOperationBody,
UpdateEvmSmartAccountBody,
} from "../coinbaseDeveloperPlatformAPIs.schemas.js";
import { cdpApiClient } from "../../cdpApiClient.js";
type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];
/**
* Lists the Smart Accounts belonging to the developer's CDP Project.
The response is paginated, and by default, returns 20 accounts per page.
* @summary List Smart Accounts
*/
export const listEvmSmartAccounts = (
params?: ListEvmSmartAccountsParams,
options?: SecondParameter<typeof cdpApiClient>,
) => {
return cdpApiClient<ListEvmSmartAccounts200>(
{ url: `/v2/evm/smart-accounts`, method: "GET", params },
options,
);
};
/**
* Creates a new Smart Account.
* @summary Create a Smart Account
*/
export const createEvmSmartAccount = (
createEvmSmartAccountBody: CreateEvmSmartAccountBody,
options?: SecondParameter<typeof cdpApiClient>,
) => {
return cdpApiClient<EvmSmartAccount>(
{
url: `/v2/evm/smart-accounts`,
method: "POST",
headers: { "Content-Type": "application/json" },
data: createEvmSmartAccountBody,
},
options,
);
};
/**
* Gets a Smart Account by its name.
* @summary Get a Smart Account by name
*/
export const getEvmSmartAccountByName = (
name: string,
options?: SecondParameter<typeof cdpApiClient>,
) => {
return cdpApiClient<EvmSmartAccount>(
{ url: `/v2/evm/smart-accounts/by-name/${name}`, method: "GET" },
options,
);
};
/**
* Gets a Smart Account by its address.
* @summary Get a Smart Account by address
*/
export const getEvmSmartAccount = (
address: string,
options?: SecondParameter<typeof cdpApiClient>,
) => {
return cdpApiClient<EvmSmartAccount>(
{ url: `/v2/evm/smart-accounts/${address}`, method: "GET" },
options,
);
};
/**
* Updates an existing EVM smart account. Use this to update the smart account's name.
* @summary Update an EVM Smart Account
*/
export const updateEvmSmartAccount = (
address: string,
updateEvmSmartAccountBody: UpdateEvmSmartAccountBody,
options?: SecondParameter<typeof cdpApiClient>,
) => {
return cdpApiClient<EvmSmartAccount>(
{
url: `/v2/evm/smart-accounts/${address}`,
method: "PUT",
headers: { "Content-Type": "application/json" },
data: updateEvmSmartAccountBody,
},
options,
);
};
/**
* Prepares a new user operation on a Smart Account for a specific network.
* @summary Prepare a user operation
*/
export const prepareUserOperation = (
address: string,
prepareUserOperationBody: PrepareUserOperationBody,
options?: SecondParameter<typeof cdpApiClient>,
) => {
return cdpApiClient<EvmUserOperation>(
{
url: `/v2/evm/smart-accounts/${address}/user-operations`,
method: "POST",
headers: { "Content-Type": "application/json" },
data: prepareUserOperationBody,
},
options,
);
};
/**
* Gets a user operation by its hash.
* @summary Get a user operation
*/
export const getUserOperation = (
address: string,
userOpHash: string,
options?: SecondParameter<typeof cdpApiClient>,
) => {
return cdpApiClient<EvmUserOperation>(
{ url: `/v2/evm/smart-accounts/${address}/user-operations/${userOpHash}`, method: "GET" },
options,
);
};
/**
* Sends a user operation with a signature.
The payload to sign must be the `userOpHash` field of the user operation. This hash should be signed directly (not using `personal_sign` or EIP-191 message hashing).
The signature must be 65 bytes in length, consisting of: - 32 bytes for the `r` value - 32 bytes for the `s` value - 1 byte for the `v` value (must be 27 or 28)
If using the CDP Paymaster, the user operation must be signed and sent within 2 minutes of being prepared.
* @summary Send a user operation
*/
export const sendUserOperation = (
address: string,
userOpHash: string,
sendUserOperationBody: SendUserOperationBody,
options?: SecondParameter<typeof cdpApiClient>,
) => {
return cdpApiClient<EvmUserOperation>(
{
url: `/v2/evm/smart-accounts/${address}/user-operations/${userOpHash}/send`,
method: "POST",
headers: { "Content-Type": "application/json" },
data: sendUserOperationBody,
},
options,
);
};
/**
* Creates a spend permission for the given smart account address.
* @summary Create a spend permission
*/
export const createSpendPermission = (
address: string,
createSpendPermissionRequest: CreateSpendPermissionRequest,
options?: SecondParameter<typeof cdpApiClient>,
) => {
return cdpApiClient<EvmUserOperation>(
{
url: `/v2/evm/smart-accounts/${address}/spend-permissions`,
method: "POST",
headers: { "Content-Type": "application/json" },
data: createSpendPermissionRequest,
},
options,
);
};
/**
* Lists spend permission for the given smart account address.
* @summary List spend permissions
*/
export const listSpendPermissions = (
address: string,
params?: ListSpendPermissionsParams,
options?: SecondParameter<typeof cdpApiClient>,
) => {
return cdpApiClient<ListSpendPermissions200>(
{ url: `/v2/evm/smart-accounts/${address}/spend-permissions/list`, method: "GET", params },
options,
);
};
/**
* Revokes an existing spend permission.
* @summary Revoke a spend permission
*/
export const revokeSpendPermission = (
address: string,
revokeSpendPermissionRequest: RevokeSpendPermissionRequest,
options?: SecondParameter<typeof cdpApiClient>,
) => {
return cdpApiClient<EvmUserOperation>(
{
url: `/v2/evm/smart-accounts/${address}/spend-permissions/revoke`,
method: "POST",
headers: { "Content-Type": "application/json" },
data: revokeSpendPermissionRequest,
},
options,
);
};
export type ListEvmSmartAccountsResult = NonNullable<
Awaited<ReturnType<typeof listEvmSmartAccounts>>
>;
export type CreateEvmSmartAccountResult = NonNullable<
Awaited<ReturnType<typeof createEvmSmartAccount>>
>;
export type GetEvmSmartAccountByNameResult = NonNullable<
Awaited<ReturnType<typeof getEvmSmartAccountByName>>
>;
export type GetEvmSmartAccountResult = NonNullable<Awaited<ReturnType<typeof getEvmSmartAccount>>>;
export type UpdateEvmSmartAccountResult = NonNullable<
Awaited<ReturnType<typeof updateEvmSmartAccount>>
>;
export type PrepareUserOperationResult = NonNullable<
Awaited<ReturnType<typeof prepareUserOperation>>
>;
export type GetUserOperationResult = NonNullable<Awaited<ReturnType<typeof getUserOperation>>>;
export type SendUserOperationResult = NonNullable<Awaited<ReturnType<typeof sendUserOperation>>>;
export type CreateSpendPermissionResult = NonNullable<
Awaited<ReturnType<typeof createSpendPermission>>
>;
export type ListSpendPermissionsResult = NonNullable<
Awaited<ReturnType<typeof listSpendPermissions>>
>;
export type RevokeSpendPermissionResult = NonNullable<
Awaited<ReturnType<typeof revokeSpendPermission>>
>;