/**
 * @description This method creates a permission for a given claimRef and permission
 *
 * @param claimRef 'user:<username>' or 'group:<groupname>'
 *
 * @param permission 'admin' | 'push' | 'pull' | 'maintain'
 *
 * @returns Permission
 */
export declare function createPermissionFor(claimRef: `group:${string}` | `user:${string}` | `collaborator:${string}`, permission: 'admin' | 'push' | 'pull' | 'maintain'): Permission | CollaboratorPermission;
/**
 * @description This method creates a list of permissions for a given claimRefs and permission
 *
 * @param claimRefs 'user:<username>' or 'group:<groupname>'
 *
 * @param permission 'admin' | 'push' | 'pull' | 'maintain'
 *
 * @returns Permission[]
 */
export declare function createPermissionsListFor(claimRefs: (`group:${string}` | `user:${string}` | `collaborator:${string}`)[], permission: 'admin' | 'push' | 'pull' | 'maintain'): (Permission | CollaboratorPermission)[];
export declare function createCRrefFrom(claimRef: `group:${string}` | `user:${string}` | `collaborator:${string}`, needsSecret: boolean): {
    ref: {
        kind: string;
        name: string;
        needsSecret: boolean;
    };
};
export interface Permission {
    role: 'admin' | 'push' | 'pull' | 'maintain';
    ref: {
        kind: 'FirestartrGithubMembership' | 'FirestartrGithubGroup';
        name: string;
        needsSecret: boolean;
    };
}
export interface CollaboratorPermission {
    role: 'admin' | 'push' | 'pull' | 'maintain';
    collaborator: string;
}
/**
 * @description This method creates the codeowners data for the repository
 *
 * @param claim
 *
 * @returns string
 */
export declare function createCodeOwnersData(claim: any, additionalRules?: any[]): string;
/**
 * A reference to a secret, which can be an internal or external source.
 */
export interface SecretRef {
    kind: 'Secret' | 'ExternalSecret';
    name: string;
    key: string;
}
/**
 *  * A variable definition. It must have a name and can be either a literal
 *   * value or a reference to a secret.
 *    */
export type Var = {
    name: string;
    value: string;
} | {
    name: string;
    ref: SecretRef;
};
export type RepoSecret = {
    name: string;
    ref: RepoSecretRef;
};
export type NamedVars = Var[];
export type RepoSecrets = RepoSecret[];
export interface VarsConfiguration {
    actions?: NamedVars;
}
export interface RepoSecretsConfiguration {
    dependabot?: RepoSecrets;
    actions?: RepoSecrets;
    codespaces?: RepoSecrets;
}
export interface RepoSecretRef {
    kind: 'secretsclaim';
    name: string;
    key: string;
}
export declare function isRepoSecretRef(suspectedRef: string): boolean;
export declare function extractRepoSecretRef(ref: string): RepoSecretRef;
