import * as z from 'zod';
import type { Icrc21Did } from '../declarations';
export declare const PromptMethodSchema: z.ZodEnum<{
    icrc21_call_consent_message: "icrc21_call_consent_message";
    icrc25_request_permissions: "icrc25_request_permissions";
    icrc27_accounts: "icrc27_accounts";
    icrc49_call_canister: "icrc49_call_canister";
}>;
export interface Prompts {
    [PromptMethodSchema.enum.icrc21_call_consent_message]: ConsentMessagePrompt;
    [PromptMethodSchema.enum.icrc25_request_permissions]: PermissionsPrompt;
    [PromptMethodSchema.enum.icrc27_accounts]: AccountsPrompt;
    [PromptMethodSchema.enum.icrc49_call_canister]: CallCanisterPrompt;
}
export interface RegisterPrompts<T extends keyof Prompts> {
    method: T;
    prompt: Prompts[T];
}
declare const PayloadOriginSchema: z.ZodObject<{
    origin: z.ZodURL;
}, z.core.$strip>;
export type PayloadOrigin = z.infer<typeof PayloadOriginSchema>;
declare const RejectionSchema: z.ZodFunction<z.core.$ZodFunctionArgs, z.ZodVoid>;
export type Rejection = z.infer<typeof RejectionSchema>;
declare const PermissionsConfirmationSchema: z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodObject<{
    scope: z.ZodObject<{
        method: z.ZodEnum<{
            icrc27_accounts: "icrc27_accounts";
            icrc49_call_canister: "icrc49_call_canister";
        }>;
    }, z.core.$strip>;
    state: z.ZodEnum<{
        denied: "denied";
        granted: "granted";
        ask_on_use: "ask_on_use";
    }>;
}, z.core.$strict>>], null>, z.ZodVoid>;
export type PermissionsConfirmation = z.infer<typeof PermissionsConfirmationSchema>;
declare const PermissionsPromptPayloadSchema: z.ZodObject<{
    origin: z.ZodURL;
    requestedScopes: z.ZodArray<z.ZodObject<{
        scope: z.ZodObject<{
            method: z.ZodEnum<{
                icrc27_accounts: "icrc27_accounts";
                icrc49_call_canister: "icrc49_call_canister";
            }>;
        }, z.core.$strip>;
        state: z.ZodEnum<{
            denied: "denied";
            granted: "granted";
            ask_on_use: "ask_on_use";
        }>;
    }, z.core.$strict>>;
    confirm: z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodObject<{
        scope: z.ZodObject<{
            method: z.ZodEnum<{
                icrc27_accounts: "icrc27_accounts";
                icrc49_call_canister: "icrc49_call_canister";
            }>;
        }, z.core.$strip>;
        state: z.ZodEnum<{
            denied: "denied";
            granted: "granted";
            ask_on_use: "ask_on_use";
        }>;
    }, z.core.$strict>>], null>, z.ZodVoid>;
}, z.core.$strip>;
export type PermissionsPromptPayload = z.infer<typeof PermissionsPromptPayloadSchema>;
/**
 * A function that is invoked when the signer requires the user to confirm (grant or deny) requested permissions.
 *
 * This function may be triggered in two scenarios:
 * 1. When the relying party explicitly requests permissions.
 * 2. When the relying party attempts to access a feature that requires permissions that have not yet been granted by the user.
 *
 * @param {PermissionsPromptPayload} params - An object containing the requested permissions and a function to confirm them.
 * @param {IcrcScopes[]} params.requestedScopes - An array of IcrcScopes representing the permissions being requested.
 * @param {PermissionsConfirmation} params.confirm - A function to be called by the consumer to confirm (grant or deny) the requested, a subset, or none of the permissions. Skipping a permission is equivalent to preserving its current state.
 */
export declare const PermissionsPromptSchema: z.ZodFunction<z.ZodTuple<[z.ZodObject<{
    origin: z.ZodURL;
    requestedScopes: z.ZodArray<z.ZodObject<{
        scope: z.ZodObject<{
            method: z.ZodEnum<{
                icrc27_accounts: "icrc27_accounts";
                icrc49_call_canister: "icrc49_call_canister";
            }>;
        }, z.core.$strip>;
        state: z.ZodEnum<{
            denied: "denied";
            granted: "granted";
            ask_on_use: "ask_on_use";
        }>;
    }, z.core.$strict>>;
    confirm: z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodObject<{
        scope: z.ZodObject<{
            method: z.ZodEnum<{
                icrc27_accounts: "icrc27_accounts";
                icrc49_call_canister: "icrc49_call_canister";
            }>;
        }, z.core.$strip>;
        state: z.ZodEnum<{
            denied: "denied";
            granted: "granted";
            ask_on_use: "ask_on_use";
        }>;
    }, z.core.$strict>>], null>, z.ZodVoid>;
}, z.core.$strip>], null>, z.ZodVoid>;
export type PermissionsPrompt = z.infer<typeof PermissionsPromptSchema>;
declare const AccountsApprovalSchema: z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodObject<{
    owner: z.ZodString;
    subaccount: z.ZodOptional<z.ZodString>;
}, z.core.$strict>>], null>, z.ZodVoid>;
export type AccountsApproval = z.infer<typeof AccountsApprovalSchema>;
declare const AccountsPromptPayloadSchema: z.ZodObject<{
    origin: z.ZodURL;
    approve: z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodObject<{
        owner: z.ZodString;
        subaccount: z.ZodOptional<z.ZodString>;
    }, z.core.$strict>>], null>, z.ZodVoid>;
    reject: z.ZodFunction<z.core.$ZodFunctionArgs, z.ZodVoid>;
}, z.core.$strip>;
export type AccountsPromptPayload = z.infer<typeof AccountsPromptPayloadSchema>;
/**
 * A function that is invoked when the signer requires the user - or consumer of the library - to confirm (select or reject) accounts.
 *
 * @param {AccountsPromptPayload} params - An object containing a function to confirm the accounts.
 * @param {IcrcAccounts[]} params.approve - A function to be called by the consumer to confirm (select or reject) the provided accounts.
 */
export declare const AccountsPromptSchema: z.ZodFunction<z.ZodTuple<[z.ZodObject<{
    origin: z.ZodURL;
    approve: z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodObject<{
        owner: z.ZodString;
        subaccount: z.ZodOptional<z.ZodString>;
    }, z.core.$strict>>], null>, z.ZodVoid>;
    reject: z.ZodFunction<z.core.$ZodFunctionArgs, z.ZodVoid>;
}, z.core.$strip>], null>, z.ZodVoid>;
export type AccountsPrompt = z.infer<typeof AccountsPromptSchema>;
declare const ConsentMessageApprovalSchema: z.ZodFunction<z.core.$ZodFunctionArgs, z.ZodVoid>;
export type ConsentMessageApproval = z.infer<typeof ConsentMessageApprovalSchema>;
declare const ConsentMessageStatusSchema: z.ZodUnion<[z.ZodEnum<{
    loading: "loading";
}>, z.ZodEnum<{
    error: "error";
    result: "result";
}>]>;
export type ConsentMessageStatus = z.infer<typeof ConsentMessageStatusSchema>;
declare const ConsentInfoOkSchema: z.ZodObject<{
    Ok: z.ZodCustom<Icrc21Did.icrc21_consent_info, Icrc21Did.icrc21_consent_info>;
}, z.core.$strip>;
export type ConsentInfoOk = z.infer<typeof ConsentInfoOkSchema>;
declare const ConsentInfoWarnSchema: z.ZodObject<{
    Warn: z.ZodObject<{
        method: z.ZodString;
        arg: z.ZodString;
        canisterId: z.ZodString;
        consentInfo: z.ZodCustom<Icrc21Did.icrc21_consent_info, Icrc21Did.icrc21_consent_info>;
    }, z.core.$strip>;
}, z.core.$strip>;
export type ConsentInfoWarn = z.infer<typeof ConsentInfoWarnSchema>;
declare const ResultConsentInfoSchema: z.ZodUnion<readonly [z.ZodObject<{
    Ok: z.ZodCustom<Icrc21Did.icrc21_consent_info, Icrc21Did.icrc21_consent_info>;
}, z.core.$strip>, z.ZodObject<{
    Warn: z.ZodObject<{
        method: z.ZodString;
        arg: z.ZodString;
        canisterId: z.ZodString;
        consentInfo: z.ZodCustom<Icrc21Did.icrc21_consent_info, Icrc21Did.icrc21_consent_info>;
    }, z.core.$strip>;
}, z.core.$strip>]>;
export type ResultConsentInfo = z.infer<typeof ResultConsentInfoSchema>;
declare const ResultConsentMessageSchema: z.ZodObject<{
    origin: z.ZodURL;
    status: z.ZodLiteral<"result">;
    consentInfo: z.ZodUnion<readonly [z.ZodObject<{
        Ok: z.ZodCustom<Icrc21Did.icrc21_consent_info, Icrc21Did.icrc21_consent_info>;
    }, z.core.$strip>, z.ZodObject<{
        Warn: z.ZodObject<{
            method: z.ZodString;
            arg: z.ZodString;
            canisterId: z.ZodString;
            consentInfo: z.ZodCustom<Icrc21Did.icrc21_consent_info, Icrc21Did.icrc21_consent_info>;
        }, z.core.$strip>;
    }, z.core.$strip>]>;
    approve: z.ZodFunction<z.core.$ZodFunctionArgs, z.ZodVoid>;
    reject: z.ZodFunction<z.core.$ZodFunctionArgs, z.ZodVoid>;
}, z.core.$strip>;
export type ResultConsentMessage = z.infer<typeof ResultConsentMessageSchema>;
declare const ConsentMessagePromptPayloadSchema: z.ZodUnion<readonly [z.ZodObject<{
    origin: z.ZodURL;
    status: z.ZodLiteral<"loading">;
}, z.core.$strip>, z.ZodObject<{
    origin: z.ZodURL;
    status: z.ZodLiteral<"result">;
    consentInfo: z.ZodUnion<readonly [z.ZodObject<{
        Ok: z.ZodCustom<Icrc21Did.icrc21_consent_info, Icrc21Did.icrc21_consent_info>;
    }, z.core.$strip>, z.ZodObject<{
        Warn: z.ZodObject<{
            method: z.ZodString;
            arg: z.ZodString;
            canisterId: z.ZodString;
            consentInfo: z.ZodCustom<Icrc21Did.icrc21_consent_info, Icrc21Did.icrc21_consent_info>;
        }, z.core.$strip>;
    }, z.core.$strip>]>;
    approve: z.ZodFunction<z.core.$ZodFunctionArgs, z.ZodVoid>;
    reject: z.ZodFunction<z.core.$ZodFunctionArgs, z.ZodVoid>;
}, z.core.$strip>, z.ZodObject<{
    origin: z.ZodURL;
    status: z.ZodLiteral<"error">;
    details: z.ZodOptional<z.ZodUnknown>;
}, z.core.$strip>]>;
export type ConsentMessagePromptPayload = z.infer<typeof ConsentMessagePromptPayloadSchema>;
/**
 * A function that is invoked when the signer requires the user - or consumer of the library - to approve or reject a consent message.
 *
 * @param {ConsentMessagePromptPayload} params - An object containing the consent information and functions to handle approval or rejection.
 * @param {icrc21_consent_info} params.consentInfo - An object containing the consent information that needs to be approved or rejected.
 * @param {() => void} params.approve - A function to be called by the consumer to approve the consent message.
 * @param {() => void} params.reject - A function to be called by the consumer to reject the consent message.
 */
export declare const ConsentMessagePromptSchema: z.ZodFunction<z.ZodTuple<[z.ZodUnion<readonly [z.ZodObject<{
    origin: z.ZodURL;
    status: z.ZodLiteral<"loading">;
}, z.core.$strip>, z.ZodObject<{
    origin: z.ZodURL;
    status: z.ZodLiteral<"result">;
    consentInfo: z.ZodUnion<readonly [z.ZodObject<{
        Ok: z.ZodCustom<Icrc21Did.icrc21_consent_info, Icrc21Did.icrc21_consent_info>;
    }, z.core.$strip>, z.ZodObject<{
        Warn: z.ZodObject<{
            method: z.ZodString;
            arg: z.ZodString;
            canisterId: z.ZodString;
            consentInfo: z.ZodCustom<Icrc21Did.icrc21_consent_info, Icrc21Did.icrc21_consent_info>;
        }, z.core.$strip>;
    }, z.core.$strip>]>;
    approve: z.ZodFunction<z.core.$ZodFunctionArgs, z.ZodVoid>;
    reject: z.ZodFunction<z.core.$ZodFunctionArgs, z.ZodVoid>;
}, z.core.$strip>, z.ZodObject<{
    origin: z.ZodURL;
    status: z.ZodLiteral<"error">;
    details: z.ZodOptional<z.ZodUnknown>;
}, z.core.$strip>]>], null>, z.ZodVoid>;
export type ConsentMessagePrompt = z.infer<typeof ConsentMessagePromptSchema>;
declare const CallCanisterStatusSchema: z.ZodUnion<[z.ZodEnum<{
    executing: "executing";
}>, z.ZodEnum<{
    error: "error";
    result: "result";
}>]>;
export type CallCanisterStatus = z.infer<typeof CallCanisterStatusSchema>;
declare const CallCanisterPromptPayloadSchema: z.ZodUnion<readonly [z.ZodObject<{
    origin: z.ZodURL;
    status: z.ZodLiteral<"executing">;
}, z.core.$strip>, z.ZodIntersection<z.ZodObject<{
    origin: z.ZodURL;
    status: z.ZodLiteral<"result">;
}, z.core.$strip>, z.ZodObject<{
    contentMap: z.ZodString;
    certificate: z.ZodString;
}, z.core.$strict>>, z.ZodObject<{
    origin: z.ZodURL;
    status: z.ZodLiteral<"error">;
    details: z.ZodOptional<z.ZodUnknown>;
}, z.core.$strip>]>;
export type CallCanisterPromptPayload = z.infer<typeof CallCanisterPromptPayloadSchema>;
export declare const CallCanisterPromptSchema: z.ZodFunction<z.ZodTuple<[z.ZodUnion<readonly [z.ZodObject<{
    origin: z.ZodURL;
    status: z.ZodLiteral<"executing">;
}, z.core.$strip>, z.ZodIntersection<z.ZodObject<{
    origin: z.ZodURL;
    status: z.ZodLiteral<"result">;
}, z.core.$strip>, z.ZodObject<{
    contentMap: z.ZodString;
    certificate: z.ZodString;
}, z.core.$strict>>, z.ZodObject<{
    origin: z.ZodURL;
    status: z.ZodLiteral<"error">;
    details: z.ZodOptional<z.ZodUnknown>;
}, z.core.$strip>]>], null>, z.ZodVoid>;
export type CallCanisterPrompt = z.infer<typeof CallCanisterPromptSchema>;
export {};
