import { type Coin, type EncodeObject } from '@cosmjs/proto-signing'; import { type DeliverTxResponse } from '@cosmjs/stargate'; import { type SubmitClaimAuthorization } from '@ixo/impactxclient-sdk/types/codegen/ixo/claims/v1beta1/authz.js'; import z from 'zod'; export interface IAuthzConfig { requiredPermissions: string[]; granterAddress?: string; granteeAddress: string; expirationDays?: number; spendLimit?: Array<{ denom: string; amount: string; }>; oracleName: string; } export declare const AuthzConfigSchema: z.ZodObject<{ requiredPermissions: z.ZodArray; granteeAddress: z.ZodString; granterAddress: z.ZodString; oracleName: z.ZodString; expirationDays: z.ZodOptional; spendLimit: z.ZodOptional>>; }, z.z.core.$strip>; export declare function validateAuthzConfig(config: unknown, checkGranterAddress?: boolean): IAuthzConfig; export type TransactionFn = (messages: readonly EncodeObject[], memo?: string) => Promise; export type AuthorizationType = '/cosmos.authz.v1beta1.GenericAuthorization' | '/cosmos.bank.v1beta1.SendAuthorization' | '/ixo.claims.v1beta1.SubmitClaimAuthorization'; type SendAuthorizationPermissionPayload = { spendLimit: Array<{ denom: string; amount: string; }>; allowList?: Array; }; type SubmitClaimAuthorizationPermissionPayload = { admin: string; constraints: SubmitClaimAuthorization['constraints']; }; export type Permission = { msgTypeUrl: T extends '/cosmos.authz.v1beta1.GenericAuthorization' ? string : T; granter: string; grantee: string; expiration: Date | null; } & (T extends '/cosmos.bank.v1beta1.SendAuthorization' ? SendAuthorizationPermissionPayload : T extends '/ixo.claims.v1beta1.SubmitClaimAuthorization' ? SubmitClaimAuthorizationPermissionPayload : {}); export type GetOracleAuthZConfigParams = { oracleDid: string; granterAddress: string; customConfigName?: string; matrixAccessToken?: string; matrixHomeServer?: string; }; export type GrantClaimSubmitAuthorizationParams = { claimCollectionId: string; accountAddress: string; oracleAddress: string; agentQuota: number; oracleName: string; adminAddress: string; maxAmount?: Coin[]; }; export {}; //# sourceMappingURL=types.d.ts.map