Vana SDK - v0.1.0
    Preparing search index...

    Interface RelayerCallbacks

    Relayer callback functions for handling gasless transactions.

    Instead of hardcoding HTTP/REST API calls, users can provide custom callback functions to handle transaction relay in any way they choose (HTTP, WebSocket, direct blockchain submission, etc.).

    const relayerCallbacks: RelayerCallbacks = {
    async submitPermissionGrant(typedData, signature) {
    // Custom implementation - could be HTTP, WebSocket, etc.
    const response = await fetch('https://my-relayer.com/api/grant', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ typedData, signature })
    });
    const result = await response.json();
    return result.transactionHash;
    },

    async submitFileAddition(url, userAddress) {
    // Custom relay implementation
    return await myCustomRelayer.addFile(url, userAddress);
    }
    };
    interface RelayerCallbacks {
        submitPermissionGrant?: (
            typedData: PermissionGrantTypedData,
            signature: `0x${string}`,
        ) => Promise<`0x${string}`>;
        submitPermissionRevoke?: (
            typedData: GenericTypedData,
            signature: `0x${string}`,
        ) => Promise<`0x${string}`>;
        submitTrustServer?: (
            typedData: TrustServerTypedData,
            signature: `0x${string}`,
        ) => Promise<`0x${string}`>;
        submitUntrustServer?: (
            typedData: UntrustServerTypedData,
            signature: `0x${string}`,
        ) => Promise<`0x${string}`>;
        submitFileAddition?: (
            url: string,
            userAddress: string,
        ) => Promise<{ fileId: number; transactionHash: `0x${string}` }>;
        submitFileAdditionWithPermissions?: (
            url: string,
            userAddress: string,
            permissions: { account: string; key: string }[],
        ) => Promise<{ fileId: number; transactionHash: `0x${string}` }>;
        submitFileAdditionComplete?: (
            params: {
                url: string;
                userAddress: `0x${string}`;
                permissions: { account: `0x${string}`; key: string }[];
                schemaId: number;
            },
        ) => Promise<{ fileId: number; transactionHash: `0x${string}` }>;
        storeGrantFile?: (grantData: GrantFile) => Promise<string>;
    }
    Index

    Properties

    submitPermissionGrant?: (
        typedData: PermissionGrantTypedData,
        signature: `0x${string}`,
    ) => Promise<`0x${string}`>

    Submit a signed permission grant transaction for relay

    Type declaration

      • (
            typedData: PermissionGrantTypedData,
            signature: `0x${string}`,
        ): Promise<`0x${string}`>
      • Parameters

        Returns Promise<`0x${string}`>

        Promise resolving to the transaction hash

    submitPermissionRevoke?: (
        typedData: GenericTypedData,
        signature: `0x${string}`,
    ) => Promise<`0x${string}`>

    Submit a signed permission revocation transaction for relay

    Type declaration

      • (typedData: GenericTypedData, signature: `0x${string}`): Promise<`0x${string}`>
      • Parameters

        • typedData: GenericTypedData

          The EIP-712 typed data that was signed

        • signature: `0x${string}`

          The user's signature

        Returns Promise<`0x${string}`>

        Promise resolving to the transaction hash

    submitTrustServer?: (
        typedData: TrustServerTypedData,
        signature: `0x${string}`,
    ) => Promise<`0x${string}`>

    Submit a signed trust server transaction for relay

    Type declaration

      • (
            typedData: TrustServerTypedData,
            signature: `0x${string}`,
        ): Promise<`0x${string}`>
      • Parameters

        • typedData: TrustServerTypedData

          The EIP-712 typed data that was signed

        • signature: `0x${string}`

          The user's signature

        Returns Promise<`0x${string}`>

        Promise resolving to the transaction hash

    submitUntrustServer?: (
        typedData: UntrustServerTypedData,
        signature: `0x${string}`,
    ) => Promise<`0x${string}`>

    Submit a signed untrust server transaction for relay

    Type declaration

      • (
            typedData: UntrustServerTypedData,
            signature: `0x${string}`,
        ): Promise<`0x${string}`>
      • Parameters

        • typedData: UntrustServerTypedData

          The EIP-712 typed data that was signed

        • signature: `0x${string}`

          The user's signature

        Returns Promise<`0x${string}`>

        Promise resolving to the transaction hash

    submitFileAddition?: (
        url: string,
        userAddress: string,
    ) => Promise<{ fileId: number; transactionHash: `0x${string}` }>

    Submit a file addition for relay

    Type declaration

      • (
            url: string,
            userAddress: string,
        ): Promise<{ fileId: number; transactionHash: `0x${string}` }>
      • Parameters

        • url: string

          The file URL to register

        • userAddress: string

          The user's address

        Returns Promise<{ fileId: number; transactionHash: `0x${string}` }>

        Promise resolving to object with fileId and transactionHash

    Use submitFileAdditionComplete for full support.

    submitFileAdditionWithPermissions?: (
        url: string,
        userAddress: string,
        permissions: { account: string; key: string }[],
    ) => Promise<{ fileId: number; transactionHash: `0x${string}` }>

    Submit a file addition with permissions for relay

    Type declaration

      • (
            url: string,
            userAddress: string,
            permissions: { account: string; key: string }[],
        ): Promise<{ fileId: number; transactionHash: `0x${string}` }>
      • Parameters

        • url: string

          The file URL to register

        • userAddress: string

          The user's address

        • permissions: { account: string; key: string }[]

          Array of encrypted permissions

        Returns Promise<{ fileId: number; transactionHash: `0x${string}` }>

        Promise resolving to object with fileId and transactionHash

    Use submitFileAdditionComplete for full support.

    submitFileAdditionComplete?: (
        params: {
            url: string;
            userAddress: `0x${string}`;
            permissions: { account: `0x${string}`; key: string }[];
            schemaId: number;
        },
    ) => Promise<{ fileId: number; transactionHash: `0x${string}` }>

    Submit a comprehensive file addition with optional schema and permissions for relay

    This is the preferred callback that supports all file addition scenarios. It can handle files with schemas, permissions, or both.

    Type declaration

      • (
            params: {
                url: string;
                userAddress: `0x${string}`;
                permissions: { account: `0x${string}`; key: string }[];
                schemaId: number;
            },
        ): Promise<{ fileId: number; transactionHash: `0x${string}` }>
      • Parameters

        • params: {
              url: string;
              userAddress: `0x${string}`;
              permissions: { account: `0x${string}`; key: string }[];
              schemaId: number;
          }

          Complete parameters for file addition

          • url: string

            The file URL to register

          • userAddress: `0x${string}`

            The user's address

          • permissions: { account: `0x${string}`; key: string }[]

            Array of encrypted permissions (empty array if none)

          • schemaId: number

            Schema ID for validation (0 if none)

        Returns Promise<{ fileId: number; transactionHash: `0x${string}` }>

        Promise resolving to object with fileId and transactionHash

    storeGrantFile?: (grantData: GrantFile) => Promise<string>

    Store a grant file for relay (e.g., upload to IPFS)

    Type declaration

      • (grantData: GrantFile): Promise<string>
      • Parameters

        Returns Promise<string>

        Promise resolving to the storage URL